- Tweaks to spiders to be less robust.

- Made goats/cows not give infinite milk but instead slowly generate milk in their udder for collecting.
- Lowered speak chance for chickens and added a limit for how many chickens can be bred.
- Lowered the chances of an egg to be a chicken hatching egg.
- If you put an egg in your pocket it won't be a chicken hatching egg anymore.
- Chickens won't spawn inside you anymore.
- Added some abstract classes to the list of things that shouldn't spawn with slime cores.
- Increased the time between events.
- Added a spawn spiders button for admins.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5535 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2013-01-12 23:07:51 +00:00
parent b7f29ca03e
commit 458fddbea5
6 changed files with 91 additions and 44 deletions

View File

@@ -421,6 +421,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=goblob'>Spawn blob</A><BR>
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
<A href='?src=\ref[src];secretsfun=alien_silent'>Spawn an Alien silently</A><BR>
<A href='?src=\ref[src];secretsfun=spiders'>Trigger a Spider infestation</A><BR>
<A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR>
<A href='?src=\ref[src];secretsfun=striketeam'>Send in a strike team</A><BR>
<A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR>

View File

@@ -1959,6 +1959,11 @@
feedback_add_details("admin_secrets_fun_used","ALS")
if(aliens_allowed)
create_xeno()
if("spiders")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SL")
new /datum/event/spider_infestation
message_admins("[key_name_admin(usr)] has spawned spiders", 1)
if("comms_blackout")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","CB")

View File

@@ -1,8 +1,8 @@
var/list/allEvents = typesof(/datum/event) - /datum/event
var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event
var/eventTimeLower = 9000 //15 minutes
var/eventTimeUpper = 15000 //25 minutes
var/eventTimeLower = 15000 //15 minutes
var/eventTimeUpper = 30000 //30 minutes
var/scheduledEvent = null

View File

@@ -22,26 +22,37 @@
health = 40
melee_damage_lower = 1
melee_damage_upper = 5
var/datum/reagents/udder = null
/mob/living/simple_animal/hostile/retaliate/goat/New()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_animal/hostile/retaliate/goat/Life()
..()
//chance to go crazy and start wacking stuff
if(prob(1))
src.visible_message("\red [src] gets an evil-looking gleam in their eye.")
faction = "hostile"
if(faction == "hostile" && prob(10))
faction = "neutral"
enemies = list()
stance = HOSTILE_STANCE_IDLE
target_mob = null
. = ..()
if(.)//chance to go crazy and start wacking stuff
if(prob(1))
src.visible_message("\red [src] gets an evil-looking gleam in their eye.")
faction = "hostile"
if(faction == "hostile" && prob(10))
faction = "neutral"
enemies = list()
stance = HOSTILE_STANCE_IDLE
target_mob = null
if(stat == CONSCIOUS)
if(udder && prob(5))
udder.add_reagent("milk", rand(5, 10))
/mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("[user] milks [src] into the [O].")
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("<span class='notice'>[user] milks [src] using the [O].</span>")
var/obj/item/weapon/reagent_containers/glass/G = O
G.reagents.add_reagent("milk",rand(7,12))
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full."
if(!transfered)
user << "\red The udder is dry. Wait a bit longer..."
else
..()
//cow
@@ -66,24 +77,38 @@
response_harm = "kicks the"
attacktext = "kicks"
health = 50
var/datum/reagents/udder = null
/mob/living/simple_animal/cow/New()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("[user] milks [src] into the [O].")
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("<span class='notice'>[user] milks [src] using the [O].</span>")
var/obj/item/weapon/reagent_containers/glass/G = O
G.reagents.add_reagent("milk",rand(5,10))
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full."
if(!transfered)
user << "\red The udder is dry. Wait a bit longer..."
else
..()
/mob/living/simple_animal/cow/Life()
. = ..()
if(stat == CONSCIOUS)
if(udder && prob(5))
udder.add_reagent("milk", rand(5, 10))
/mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob)
if(!stat && M.a_intent == "disarm" && icon_state != icon_dead)
M.visible_message("<span class='warning'>[M] tips over [src].</span>","<span class='notice'>You tip over [src].</span>")
Weaken(30)
icon_state = icon_dead
spawn(rand(20,50))
if(!stat)
if(!stat && M)
icon_state = icon_living
var/list/responses = list( "[src] looks at you imploringly.",
"[src] looks at you pleadingly",
@@ -104,7 +129,7 @@
speak_emote = list("cheeps")
emote_hear = list("cheeps")
emote_see = list("pecks at the ground","flaps it's tiny wings")
speak_chance = 10
speak_chance = 5
turns_per_move = 1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 1
@@ -116,19 +141,24 @@
var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE
New()
..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/chick/New()
..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/chick/Life()
..()
. =..()
if(!.)
return
if(!stat)
amount_grown += rand(1,2)
if(amount_grown >= 100)
new /mob/living/simple_animal/chicken(src.loc)
del(src)
var/const/MAX_CHICKENS = 50
var/global/chicken_count = 0
/mob/living/simple_animal/chicken
name = "chicken"
desc = "Hopefully the eggs are good this season."
@@ -139,7 +169,7 @@
speak_emote = list("clucks","croons")
emote_hear = list("clucks")
emote_see = list("pecks at the ground","flaps it's wings viciously")
speak_chance = 10
speak_chance = 5
turns_per_move = 1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 2
@@ -150,26 +180,36 @@
health = 10
pass_flags = PASSTABLE
New()
..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
/mob/living/simple_animal/chicken/New()
..()
pixel_x = rand(-6, 6)
pixel_y = rand(0, 10)
chicken_count += 1
/mob/living/simple_animal/chicken/Die()
..()
chicken_count -= 1
/mob/living/simple_animal/chicken/Life()
..()
. =..()
if(!.)
return
if(!stat && prob(1))
visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]")
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(src.loc)
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(get_turf(src))
E.pixel_x = rand(-6,6)
E.pixel_y = rand(-6,6)
processing_objects.Add(E)
if(chicken_count < MAX_CHICKENS && prob(10))
processing_objects.Add(E)
obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/process()
amount_grown += rand(1,2)
if(amount_grown >= 100)
if(prob(50))
if(isturf(loc))
amount_grown += rand(1,2)
if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/chick(src.loc)
new /mob/living/simple_animal/chick(get_turf(src))
processing_objects.Remove(src)
del(src)
else
processing_objects.Remove(src)
del(src)

View File

@@ -26,7 +26,7 @@
melee_damage_lower = 15
melee_damage_upper = 20
var/poison_per_bite = 5
var/poison_type = "mindbreaker"
var/poison_type = "toxin"
faction = "spiders"
var/busy = 0
pass_flags = PASSTABLE
@@ -43,7 +43,7 @@
melee_damage_upper = 10
poison_per_bite = 10
var/atom/cocoon_target
poison_type = "zombiepowder"
poison_type = "stoxin"
var/fed = 0
//hunters have the most poison and move the fastest, so they can find prey
@@ -56,7 +56,7 @@
health = 120
melee_damage_lower = 10
melee_damage_upper = 20
poison_per_bite = 20
poison_per_bite = 5
/mob/living/simple_animal/hostile/giant_spider/AttackingTarget()
..()
@@ -72,8 +72,8 @@
..()
if(!stat)
if(stance == HOSTILE_STANCE_IDLE)
//10% chance to skitter madly away
if(!busy && prob(10))
//1% chance to skitter madly away
if(!busy && prob(1))
/*var/list/move_targets = list()
for(var/turf/T in orange(20, src))
move_targets.Add(T)*/

View File

@@ -979,6 +979,7 @@ datum
/mob/living/simple_animal/hostile/syndicate/ranged,
/mob/living/simple_animal/hostile/syndicate/ranged/space,
/mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/hostile/retaliate,
/mob/living/simple_animal/hostile/retaliate/clown
)//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs