mirror of
https://github.com/worldforge/cyphesis
synced 2026-08-13 12:26:04 -04:00
It's currently a copy of the Mason ruleset. Where Mason focuses on letting the users create the world themselves, Deeds instead focuses on allowing world authors to set up enticing worlds with gameplay and stories. In contrast to Mason there are more features available to the world authors which allow for automatic creation of entities and so on.
51 lines
1.9 KiB
Python
Executable file
51 lines
1.9 KiB
Python
Executable file
#This file is distributed under the terms of the GNU General Public license.
|
|
#Copyright (C) 1999 Aloril (See the file COPYING for details).
|
|
|
|
from atlas import *
|
|
|
|
from common import const
|
|
|
|
import server
|
|
|
|
class Fire(server.Thing):
|
|
"""fire to burn things up"""
|
|
#CHEAT! make it more realistic (like spreading to things that burn near)
|
|
def extinguish_operation(self, op):
|
|
"""If somebody tries to extinguish us, change status lower"""
|
|
self.status=self.status-0.25
|
|
self_ent=Entity(self.id,status=self.status)
|
|
#print "Extinguish:",self,self.location.parent,self.status,op.from_
|
|
return Operation("set",self_ent,to=self)
|
|
def tick_operation(self, op):
|
|
"""things to do every tick, see comments"""
|
|
#print `self`,"Got tick operation:\n",op
|
|
#Is fire extinguished?
|
|
# if self.status<0.0:
|
|
# return Operation("delete",Entity(self.id),to=self)
|
|
|
|
#Have we burned up our parent container?
|
|
if server.world==self.location.parent:
|
|
return Operation("delete",Entity(self.id),to=self)
|
|
|
|
#Send burn operation to parent container
|
|
self_ent=Entity(self.id,status=self.status)
|
|
opBurn=Operation("burn",self_ent,to=self.location.parent)
|
|
if self.status<0.2:
|
|
status=self.status-0.02
|
|
else:
|
|
status=self.status-0.02
|
|
if status > 1:
|
|
status=1
|
|
self_ent2=Entity(self.id,status=status)
|
|
opSet=Operation("set",self_ent2,to=self)
|
|
|
|
#and call this method later
|
|
opTick=Operation("tick",to=self)
|
|
opTick.setFutureSeconds(const.basic_tick*4)
|
|
return Oplist(opBurn,Operation("sight",opBurn),opTick,opSet)
|
|
def nourish_operation(self, op):
|
|
#Increase fire
|
|
inc=op[0].mass
|
|
self.status=self.status+inc
|
|
#No need to send a set. The next tick will deal with that.
|
|
#def move_operation(self, op): pass
|